#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>

int main()
{
    int fd1 = open("log.txt",O_WRONLY|O_CREAT|O_TRUNC,0666);
    int fd2 = open("log.txt",O_WRONLY|O_CREAT|O_TRUNC,0666);


    printf("fd1=%d fd2=%d\n",fd1,fd2);

    const char* msg1 = "hello fd1\n";
    const char* msg2 = "hello fd2\n";
    
    //先向fd1写入msg1，再向fd2写入msg2
    //由于是不同打开文件句柄，文件偏移量不同，fd1写入msg1后文件偏移量改变，但fd2的文件偏移量不变
    //因此msg2会覆盖msg1
    write(fd1,msg1,strlen(msg1));
    write(fd2,msg2,strlen(msg2));
    //此时log.txt里的内容是"hello fd2\n"
    
    //再次向fd1写入msg1
    //由于fd1、fd2文件偏移量均已改变且相同，所以此时写入msg1不会发生覆盖
    write(fd1,msg1,strlen(msg1));
    //此时log.txt里的内容是："hello fd2\nhello fd1\n"

    close(fd1);
    close(fd2);

    return 0;
}
